package com.commerce.product.service;

import com.commerce.common.message.FlashSaleMessage;

/**
 * 秒杀订单处理服务接口
 */
public interface FlashSaleOrderService {

    /**
     * 处理秒杀订单
     * @param message 秒杀消息
     * @return 处理结果
     */
    boolean processFlashSaleOrder(FlashSaleMessage message);

    /**
     * 回滚库存
     * @param message 秒杀消息
     * @return 处理结果
     */
    boolean rollbackStock(FlashSaleMessage message);

    /**
     * 处理订单超时
     * @param message 秒杀消息
     * @return 处理结果
     */
    boolean handleOrderTimeout(FlashSaleMessage message);

    /**
     * 处理失败的订单
     * @param message 秒杀消息
     */
    void handleFailedOrder(FlashSaleMessage message);

    /**
     * 创建秒杀订单
     * @param message 秒杀消息
     * @return 订单号
     */
    String createFlashSaleOrder(FlashSaleMessage message);

    /**
     * 扣减数据库库存
     * @param flashSaleId 秒杀活动ID
     * @param productId 商品ID
     * @param quantity 数量
     * @return 是否成功
     */
    boolean deductDatabaseStock(Long flashSaleId, Long productId, Integer quantity);

    /**
     * 恢复数据库库存
     * @param flashSaleId 秒杀活动ID
     * @param productId 商品ID
     * @param quantity 数量
     * @return 是否成功
     */
    boolean restoreDatabaseStock(Long flashSaleId, Long productId, Integer quantity);
}
